/**
 * 
 */
package model.facade.persistence.mysql;

import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.GregorianCalendar;

import model.core.torneo.Gara;
import model.core.torneo.Torneo;

/**
 * @author Giuseppe Fusco (fusgius19@gmail.com)
 *
 */
public class MySQLTorneiQueryUtility {

	public static int getIdTorneoByNome(String nome, MySQLDBMS mys){
		try {
			ResultSet r = mys.getResult("select idtorneo from torneo where nome=\""+nome+"\"");
			if(r.first()){
				return r.getInt(1);
			}else
				return -1;
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			return -1;
		}
	}

	public static Torneo getTorneoById(int id, MySQLDBMS mys){
		try {
			ResultSet r = mys.getResult("select * from torneo where idtorneo="+id);
			if(r.first()){
				Torneo t = new Torneo(r.getInt("max_partecipanti"), r.getInt("min_partecipanti"));
				t.setNome(r.getString("nome"));
				t.setTipologia(r.getString("tipologia"));
				t.setStato(r.getString("stato_torneo"));
				t.setNumero_edizione(r.getInt("numero_edizione"));
				t.setAnno_svolgimento(r.getInt("anno_svolgimento"));
				t.setSingolo(r.getInt("is_singolo")==1?true:false);
				t.setVincitore(MySQLUtentiQueryUtility.getGiocatoreByIdGiocatore(r.getInt("vincitore"), mys));
				return t;
			}else
				return null;
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			return null;
		}
	}

	public static Torneo getTorneoByNome(String nome, MySQLDBMS mys){
		return getTorneoById(getIdTorneoByNome(nome, mys), mys);
	}

	public static int getIdGaraByNome(String nome, MySQLDBMS mys){
		try {
			ResultSet r = mys.getResult("select idgara from gara where nome=\""+nome+"\"");
			if(r.first())
				return r.getInt(1);
			else
				return -1;
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			return -1;
		}
	}

	public static Gara getGaraById(int id, MySQLDBMS mys){
		try {
			ResultSet r = mys.getResult("select * from gara where idgara="+id);
			if(r.first()){
				Gara g = new Gara();
				g.setNome(r.getString("nome"));
				g.setNro_giorni_da_disputare(r.getInt("nro_giorni_da_disputare"));
				g.setStato(r.getString("stato_gara"));
				g.setSync(r.getInt("is_sync")==1?true:false);
				g.setVincitore(MySQLUtentiQueryUtility.getGiocatoreByIdGiocatore(r.getInt("vincitore"), mys));
				GregorianCalendar di = new GregorianCalendar();
				di.setTime(r.getDate("data_inizio"));
				g.setData_inizio(di);
				GregorianCalendar df = new GregorianCalendar();
				df.setTimeInMillis(r.getDate("data_fine").getTime());
				g.setData_fine(df);
				di=null;
				df=null;
				g.setGiocatori(DAOManager_MySQL.getInstance().getGaraDao().getPartecipantiToGara(g));
				return g;
			}else
				return null;
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			return null;
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			return null;
		} catch (IOException e) {
			// TODO Auto-generated catch block
			return null;
		}
		
	}
	
	public static Gara getGaraByNome(String nome, MySQLDBMS mys){
		return getGaraById(getIdGaraByNome(nome, mys), mys);
	}

}
